#ifndef _SCHEDULERASM_H
#define _SCHEDULERASM_H

#include "defs.h"
#include "shell.h"

/*
 * Funcion: register_task
 * ----------------------
 * Recibe como primer parametro la direccion de la funcion que se desea
 * ejecutar, como segundo el sp que se pretende cargar.
 */
void register_task(programT p, int *new_sp, int argc, char **argv);

/*
 * Funcion: register_task
 * ----------------------
 * Recibe como primer parametro la direccion de la funcion que se desea
 * ejecutar, como segundo el sp que se pretende cargar.
 */
void start_init_asm(programT p, int new_sp);


/*
 * Funcion: context_switch
 * -----------------------
 * Esta subrutina se encarga de intercambiar los contextos de 2 tareas.
 * Para ello debe recibir como parametro el sp de la tarea a la que se quiere
 * switchear y la direccion de memoria donde se debe guardar el sp actual.
 */
void context_switch(int new_sp, int *current_sp);
void exit_switch(int new_sp, int oldpid);



#endif /* _SCHEDULERASM_H */

